<!-- HTML header for doxygen 1.8.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- For Mobile Devices -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
        <meta name="generator" content="Doxygen 1.8.18"/>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
        <title>HElib: helib::DoubleCRT Class Reference</title>
        <!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
        <script type="text/javascript" src="dynsections.js"></script>
        <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
        <link href="doxygen.css" rel="stylesheet" type="text/css" />
        <link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
        <link href='https://fonts.googleapis.com/css?family=Roboto+Slab' rel='stylesheet' type='text/css'>
		<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100;1,700&family=Merriweather&family=Merriweather+Sans&family=Open+Sans&family=Poppins:ital@1&family=Roboto:ital,wght@0,400;1,300;1,900&display=swap" rel="stylesheet"> 
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
        <link href="jquery.smartmenus.bootstrap.css" rel="stylesheet">
        <script type="text/javascript" src="jquery.smartmenus.js"></script>
        <!-- SmartMenus jQuery Bootstrap Addon -->
        <script type="text/javascript" src="jquery.smartmenus.bootstrap.js"></script>
        <!-- SmartMenus jQuery plugin -->
    </head>
    <body style="font-family: 'Merriweather', serif;">
        <nav class="navbar navbar-default" role="navigation">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand">HElib Implementing Homomorphic Encryption</a>
                </div>
            </div>
        </nav>
        <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
            <div class="content" id="content">
                <div class="container">
                    <div class="row">
                        <div class="col-sm-12 panel " style="padding-bottom: 15px;">
                            <div style="margin-bottom: 15px;">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacehelib.html">helib</a></li><li class="navelem"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classhelib_1_1_double_c_r_t-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">helib::DoubleCRT Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Implementing polynomials (elements in the ring R_Q) in double-CRT form.  
 <a href="classhelib_1_1_double_c_r_t.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_double_c_r_t_8h_source.html">DoubleCRT.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for helib::DoubleCRT:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classhelib_1_1_double_c_r_t.png" usemap="#helib::DoubleCRT_map" alt=""/>
  <map id="helib::DoubleCRT_map" name="helib::DoubleCRT_map">
<area href="classhelib_1_1_ctxt_part.html" title="One entry in a ciphertext std::vector." alt="helib::CtxtPart" shape="rect" coords="0,56,109,80"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a631f72e6137f32949db5d7aafb44fda0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a631f72e6137f32949db5d7aafb44fda0">DoubleCRT</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)=default</td></tr>
<tr class="separator:a631f72e6137f32949db5d7aafb44fda0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6d4ff0accbee297247d8da856310a5f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ac6d4ff0accbee297247d8da856310a5f">DoubleCRT</a> (const NTL::ZZX &amp;poly, const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;_context, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;indexSet)</td></tr>
<tr class="memdesc:ac6d4ff0accbee297247d8da856310a5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializing <a class="el" href="classhelib_1_1_double_c_r_t.html" title="Implementing polynomials (elements in the ring R_Q) in double-CRT form.">DoubleCRT</a> from a ZZX polynomial.  <a href="classhelib_1_1_double_c_r_t.html#ac6d4ff0accbee297247d8da856310a5f">More...</a><br /></td></tr>
<tr class="separator:ac6d4ff0accbee297247d8da856310a5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fb8cdb8c4cf76e9199c83d15d54889a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a3fb8cdb8c4cf76e9199c83d15d54889a">DoubleCRT</a> (const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;poly, const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;_context, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;indexSet)</td></tr>
<tr class="memdesc:a3fb8cdb8c4cf76e9199c83d15d54889a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as above, but with zzX's.  <a href="classhelib_1_1_double_c_r_t.html#a3fb8cdb8c4cf76e9199c83d15d54889a">More...</a><br /></td></tr>
<tr class="separator:a3fb8cdb8c4cf76e9199c83d15d54889a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0110b865683a9b7f29759f4932b6f1a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a0110b865683a9b7f29759f4932b6f1a7">DoubleCRT</a> (const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;_context, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;indexSet)</td></tr>
<tr class="memdesc:a0110b865683a9b7f29759f4932b6f1a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Also specify the <a class="el" href="classhelib_1_1_index_set.html" title="A dynamic set of non-negative integers.">IndexSet</a> explicitly.  <a href="classhelib_1_1_double_c_r_t.html#a0110b865683a9b7f29759f4932b6f1a7">More...</a><br /></td></tr>
<tr class="separator:a0110b865683a9b7f29759f4932b6f1a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a359081fc6e97ee9d6ee8850e85458a79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a359081fc6e97ee9d6ee8850e85458a79">operator=</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)</td></tr>
<tr class="separator:a359081fc6e97ee9d6ee8850e85458a79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07d231b95562e44eca34f4c6b340781c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a07d231b95562e44eca34f4c6b340781c">operator=</a> (const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;poly)</td></tr>
<tr class="separator:a07d231b95562e44eca34f4c6b340781c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e28f35c0499e4eb7e8b71ac62d5cfb6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a1e28f35c0499e4eb7e8b71ac62d5cfb6">operator=</a> (const NTL::ZZX &amp;poly)</td></tr>
<tr class="separator:a1e28f35c0499e4eb7e8b71ac62d5cfb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dc0acdda8893aef9e41eec2c438a709"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a9dc0acdda8893aef9e41eec2c438a709">operator=</a> (const NTL::ZZ &amp;num)</td></tr>
<tr class="separator:a9dc0acdda8893aef9e41eec2c438a709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb0601dd78afd903d603e262e0106c53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aeb0601dd78afd903d603e262e0106c53">operator=</a> (const long num)</td></tr>
<tr class="separator:aeb0601dd78afd903d603e262e0106c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad46265bdefb14d5883c552c29ee773f"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aad46265bdefb14d5883c552c29ee773f">getOneRow</a> (NTL::Vec&lt; long &gt; &amp;row, long idx, bool positive=false) const</td></tr>
<tr class="memdesc:aad46265bdefb14d5883c552c29ee773f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get one row of a polynomial.  <a href="classhelib_1_1_double_c_r_t.html#aad46265bdefb14d5883c552c29ee773f">More...</a><br /></td></tr>
<tr class="separator:aad46265bdefb14d5883c552c29ee773f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2fefa3ded63458f059e9aade86f29fe"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ae2fefa3ded63458f059e9aade86f29fe">getOneRow</a> (NTL::zz_pX &amp;row, long idx) const</td></tr>
<tr class="separator:ae2fefa3ded63458f059e9aade86f29fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80f58978e1b572fcf7a3d012f4a69f23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a80f58978e1b572fcf7a3d012f4a69f23">toPoly</a> (NTL::ZZX &amp;p, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s, bool positive=false) const</td></tr>
<tr class="memdesc:a80f58978e1b572fcf7a3d012f4a69f23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recovering the polynomial in coefficient representation. This yields an integer polynomial with coefficients in [-P/2,P/2], unless the positive flag is set to true, in which case we get coefficients in [0,P-1] (P is the product of all moduli used). Using the optional <a class="el" href="classhelib_1_1_index_set.html" title="A dynamic set of non-negative integers.">IndexSet</a> param we compute the polynomial reduced modulo the product of only the primes in that set.  <a href="classhelib_1_1_double_c_r_t.html#a80f58978e1b572fcf7a3d012f4a69f23">More...</a><br /></td></tr>
<tr class="separator:a80f58978e1b572fcf7a3d012f4a69f23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23730171b19d350e5289245e1c7d634e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a23730171b19d350e5289245e1c7d634e">toPoly</a> (NTL::ZZX &amp;p, bool positive=false) const</td></tr>
<tr class="separator:a23730171b19d350e5289245e1c7d634e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad96a04f62a268aa387cd4dbc456ab784"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ad96a04f62a268aa387cd4dbc456ab784">operator==</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other) const</td></tr>
<tr class="separator:ad96a04f62a268aa387cd4dbc456ab784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a602435fa109d85c1a896b7dcb614c1a3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a602435fa109d85c1a896b7dcb614c1a3">operator!=</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other) const</td></tr>
<tr class="separator:a602435fa109d85c1a896b7dcb614c1a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68dbfc4cbeb18fa08fd6309719645a32"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a68dbfc4cbeb18fa08fd6309719645a32">SetZero</a> ()</td></tr>
<tr class="separator:a68dbfc4cbeb18fa08fd6309719645a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60f6697ca6a3c56375b2f9650e108497"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a60f6697ca6a3c56375b2f9650e108497">SetOne</a> ()</td></tr>
<tr class="separator:a60f6697ca6a3c56375b2f9650e108497"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6344aee3b06c937a8a357e9add21d0d1"><td class="memItemLeft" align="right" valign="top">NTL::xdouble&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a6344aee3b06c937a8a357e9add21d0d1">breakIntoDigits</a> (std::vector&lt; <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &gt; &amp;dgts) const</td></tr>
<tr class="memdesc:a6344aee3b06c937a8a357e9add21d0d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Break into n digits,according to the primeSets in context.digits. See Section 3.1.6 of the design document (re-linearization) Returns the sum of the canonical embedding of the digits.  <a href="classhelib_1_1_double_c_r_t.html#a6344aee3b06c937a8a357e9add21d0d1">More...</a><br /></td></tr>
<tr class="separator:a6344aee3b06c937a8a357e9add21d0d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27064d89f77f57740b03d2108fe62d0f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a27064d89f77f57740b03d2108fe62d0f">addPrimes</a> (const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s1, NTL::ZZX *poly_p=0)</td></tr>
<tr class="memdesc:a27064d89f77f57740b03d2108fe62d0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expand the index set by s1. It is assumed that s1 is disjoint from the current index set. If poly_p != 0, then *poly_p will first be set to the result of applying toPoly.  <a href="classhelib_1_1_double_c_r_t.html#a27064d89f77f57740b03d2108fe62d0f">More...</a><br /></td></tr>
<tr class="separator:a27064d89f77f57740b03d2108fe62d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a09a101d684b9f2a444c27febdff627"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a8a09a101d684b9f2a444c27febdff627">addPrimesAndScale</a> (const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s1)</td></tr>
<tr class="memdesc:a8a09a101d684b9f2a444c27febdff627"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expand index set by s1, and multiply by Prod_{q in s1}. s1 is disjoint from the current index set, returns log(product).  <a href="classhelib_1_1_double_c_r_t.html#a8a09a101d684b9f2a444c27febdff627">More...</a><br /></td></tr>
<tr class="separator:a8a09a101d684b9f2a444c27febdff627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9933c593e0ce6b46f1559a6a181a4939"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a9933c593e0ce6b46f1559a6a181a4939">removePrimes</a> (const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s1)</td></tr>
<tr class="memdesc:a9933c593e0ce6b46f1559a6a181a4939"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove s1 from the index set.  <a href="classhelib_1_1_double_c_r_t.html#a9933c593e0ce6b46f1559a6a181a4939">More...</a><br /></td></tr>
<tr class="separator:a9933c593e0ce6b46f1559a6a181a4939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a067a11ce98dc23c255e8e14469936a0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a067a11ce98dc23c255e8e14469936a0d">setPrimes</a> (const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s1)</td></tr>
<tr class="memdesc:a067a11ce98dc23c255e8e14469936a0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">@ brief make prime set equal to s1  <a href="classhelib_1_1_double_c_r_t.html#a067a11ce98dc23c255e8e14469936a0d">More...</a><br /></td></tr>
<tr class="separator:a067a11ce98dc23c255e8e14469936a0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe8873e29757567be4b676e032bb3b7a"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#abe8873e29757567be4b676e032bb3b7a">getContext</a> () const</td></tr>
<tr class="separator:abe8873e29757567be4b676e032bb3b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67066e369b697046fd17f7f39a17bf58"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classhelib_1_1_index_map.html">IndexMap</a>&lt; NTL::vec_long &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a67066e369b697046fd17f7f39a17bf58">getMap</a> () const</td></tr>
<tr class="separator:a67066e369b697046fd17f7f39a17bf58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7c5ce0eed18d35a864b89198e5b2f9f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ab7c5ce0eed18d35a864b89198e5b2f9f">getIndexSet</a> () const</td></tr>
<tr class="separator:ab7c5ce0eed18d35a864b89198e5b2f9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9535bb1c1cff9fbedacfcc56a8f4ab4e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a9535bb1c1cff9fbedacfcc56a8f4ab4e">randomize</a> (const NTL::ZZ *seed=nullptr)</td></tr>
<tr class="memdesc:a9535bb1c1cff9fbedacfcc56a8f4ab4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fills each row i with random ints mod pi, uses <a class="el" href="namespace_n_t_l.html">NTL</a>'s PRG.  <a href="classhelib_1_1_double_c_r_t.html#a9535bb1c1cff9fbedacfcc56a8f4ab4e">More...</a><br /></td></tr>
<tr class="separator:a9535bb1c1cff9fbedacfcc56a8f4ab4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a842f11906b1bc36b48ae4a8d62b4ff91"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a842f11906b1bc36b48ae4a8d62b4ff91">sampleSmall</a> ()</td></tr>
<tr class="memdesc:a842f11906b1bc36b48ae4a8d62b4ff91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coefficients are -1/0/1, Prob[0]=1/2.  <a href="classhelib_1_1_double_c_r_t.html#a842f11906b1bc36b48ae4a8d62b4ff91">More...</a><br /></td></tr>
<tr class="separator:a842f11906b1bc36b48ae4a8d62b4ff91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91d2454818d59f6ea29c277844e7957f"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a91d2454818d59f6ea29c277844e7957f">sampleSmallBounded</a> ()</td></tr>
<tr class="separator:a91d2454818d59f6ea29c277844e7957f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1e6674862ea6da74cc3a8f1a901cef1"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ad1e6674862ea6da74cc3a8f1a901cef1">sampleHWt</a> (long Hwt)</td></tr>
<tr class="memdesc:ad1e6674862ea6da74cc3a8f1a901cef1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coefficients are -1/0/1 with pre-specified number of nonzeros.  <a href="classhelib_1_1_double_c_r_t.html#ad1e6674862ea6da74cc3a8f1a901cef1">More...</a><br /></td></tr>
<tr class="separator:ad1e6674862ea6da74cc3a8f1a901cef1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bd69bc52fb02706a8dc81c6f9fcf9b6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a5bd69bc52fb02706a8dc81c6f9fcf9b6">sampleHWtBounded</a> (long Hwt)</td></tr>
<tr class="separator:a5bd69bc52fb02706a8dc81c6f9fcf9b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7e6888ef2bac98a54e7088c82d2e87f"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ad7e6888ef2bac98a54e7088c82d2e87f">sampleGaussian</a> (double stdev=0.0)</td></tr>
<tr class="memdesc:ad7e6888ef2bac98a54e7088c82d2e87f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coefficients are Gaussians Return a high probability bound on L-infty norm of canonical embedding.  <a href="classhelib_1_1_double_c_r_t.html#ad7e6888ef2bac98a54e7088c82d2e87f">More...</a><br /></td></tr>
<tr class="separator:ad7e6888ef2bac98a54e7088c82d2e87f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45409981c85d5948123c93e8efeb60b2"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a45409981c85d5948123c93e8efeb60b2">sampleGaussianBounded</a> (double stdev=0.0)</td></tr>
<tr class="separator:a45409981c85d5948123c93e8efeb60b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ea63e63721e62276f1277eaeefa25f8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a8ea63e63721e62276f1277eaeefa25f8">sampleUniform</a> (long B)</td></tr>
<tr class="memdesc:a8ea63e63721e62276f1277eaeefa25f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coefficients are uniform in [-B..B].  <a href="classhelib_1_1_double_c_r_t.html#a8ea63e63721e62276f1277eaeefa25f8">More...</a><br /></td></tr>
<tr class="separator:a8ea63e63721e62276f1277eaeefa25f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a4c90df3a778273003958bae0c4fd18"><td class="memItemLeft" align="right" valign="top">NTL::xdouble&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a4a4c90df3a778273003958bae0c4fd18">sampleUniform</a> (const NTL::ZZ &amp;B)</td></tr>
<tr class="separator:a4a4c90df3a778273003958bae0c4fd18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d18d021e42bb0fcf2ed970c6fa599c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a1d18d021e42bb0fcf2ed970c6fa599c8">scaleDownToSet</a> (const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s, long ptxtSpace, NTL::ZZX &amp;delta)</td></tr>
<tr class="separator:a1d18d021e42bb0fcf2ed970c6fa599c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bba624e14ddc8a86e5228c1e2bffad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a86bba624e14ddc8a86e5228c1e2bffad">FFT</a> (const NTL::ZZX &amp;poly, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s)</td></tr>
<tr class="separator:a86bba624e14ddc8a86e5228c1e2bffad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a348e8249a6f370e6a523b6aa9e89ba2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a348e8249a6f370e6a523b6aa9e89ba2f">FFT</a> (const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;poly, const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;s)</td></tr>
<tr class="separator:a348e8249a6f370e6a523b6aa9e89ba2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f89ba3eda006c1fc14b7b52fe7ca4f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a8f89ba3eda006c1fc14b7b52fe7ca4f3">reduce</a> () const</td></tr>
<tr class="separator:a8f89ba3eda006c1fc14b7b52fe7ca4f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb6579645cacc13b3c4c4f61229f6231"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#afb6579645cacc13b3c4c4f61229f6231">read</a> (std::istream &amp;str)</td></tr>
<tr class="separator:afb6579645cacc13b3c4c4f61229f6231"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36127a66a5b6bd2645676edcfb84efdb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a36127a66a5b6bd2645676edcfb84efdb">write</a> (std::ostream &amp;str) const</td></tr>
<tr class="separator:a36127a66a5b6bd2645676edcfb84efdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Arithmetic operation</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Only the "destructive" versions are used, i.e., a += b is implemented but not a + b. </p>
</div></td></tr>
<tr class="memitem:a111523929b19b67eb7c3028f041d9747"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a111523929b19b67eb7c3028f041d9747">Negate</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)</td></tr>
<tr class="separator:a111523929b19b67eb7c3028f041d9747"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5979ae811d8392e902d52441a3906f6f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a5979ae811d8392e902d52441a3906f6f">Negate</a> ()</td></tr>
<tr class="separator:a5979ae811d8392e902d52441a3906f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab862cf071d7d9b4705a71a12276c7448"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ab862cf071d7d9b4705a71a12276c7448">operator+=</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)</td></tr>
<tr class="separator:ab862cf071d7d9b4705a71a12276c7448"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcbce63268124352f675ffdcf1d9fbc6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#afcbce63268124352f675ffdcf1d9fbc6">operator+=</a> (const NTL::ZZX &amp;poly)</td></tr>
<tr class="separator:afcbce63268124352f675ffdcf1d9fbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09c2f0e8a49dec1a23cba7514db21956"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a09c2f0e8a49dec1a23cba7514db21956">operator+=</a> (const NTL::ZZ &amp;num)</td></tr>
<tr class="separator:a09c2f0e8a49dec1a23cba7514db21956"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa04acff3373bda5e2eb2362106646ee5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aa04acff3373bda5e2eb2362106646ee5">operator+=</a> (long num)</td></tr>
<tr class="separator:aa04acff3373bda5e2eb2362106646ee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2e5c6c1238fb7bfcab215213d57cc13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ac2e5c6c1238fb7bfcab215213d57cc13">operator-=</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)</td></tr>
<tr class="separator:ac2e5c6c1238fb7bfcab215213d57cc13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c6b425dcc3dda0ebb07b153c39f2b0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a4c6b425dcc3dda0ebb07b153c39f2b0d">operator-=</a> (const NTL::ZZX &amp;poly)</td></tr>
<tr class="separator:a4c6b425dcc3dda0ebb07b153c39f2b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d8ba7dddd582076f9b7b7500b4c9f55"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a8d8ba7dddd582076f9b7b7500b4c9f55">operator-=</a> (const NTL::ZZ &amp;num)</td></tr>
<tr class="separator:a8d8ba7dddd582076f9b7b7500b4c9f55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91e564b60dd913a2255718a1fa5fe0d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a91e564b60dd913a2255718a1fa5fe0d7">operator-=</a> (long num)</td></tr>
<tr class="separator:a91e564b60dd913a2255718a1fa5fe0d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57655b2b38af885b0fa4c67113b7b14d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a57655b2b38af885b0fa4c67113b7b14d">operator++</a> ()</td></tr>
<tr class="separator:a57655b2b38af885b0fa4c67113b7b14d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf65ecd249ea4bec214df9e74ac5610b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#adf65ecd249ea4bec214df9e74ac5610b">operator--</a> ()</td></tr>
<tr class="separator:adf65ecd249ea4bec214df9e74ac5610b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6213e7fbf81a7d76a7a3eca2c255bf4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aa6213e7fbf81a7d76a7a3eca2c255bf4">operator++</a> (int)</td></tr>
<tr class="separator:aa6213e7fbf81a7d76a7a3eca2c255bf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af486580b8d08571567e26c5e3d63f1bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#af486580b8d08571567e26c5e3d63f1bb">operator--</a> (int)</td></tr>
<tr class="separator:af486580b8d08571567e26c5e3d63f1bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eaea93daef76b525e97bed6baffaf75"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a5eaea93daef76b525e97bed6baffaf75">operator*=</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other)</td></tr>
<tr class="separator:a5eaea93daef76b525e97bed6baffaf75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2208cba94ed47b3062e33d09d9bcd04f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a2208cba94ed47b3062e33d09d9bcd04f">operator*=</a> (const NTL::ZZX &amp;poly)</td></tr>
<tr class="separator:a2208cba94ed47b3062e33d09d9bcd04f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae84322d510fb43f4e1307ef494f1027f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ae84322d510fb43f4e1307ef494f1027f">operator*=</a> (const NTL::ZZ &amp;num)</td></tr>
<tr class="separator:ae84322d510fb43f4e1307ef494f1027f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40fff78be8f0d474de64963f8a3c5344"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a40fff78be8f0d474de64963f8a3c5344">operator*=</a> (long num)</td></tr>
<tr class="separator:a40fff78be8f0d474de64963f8a3c5344"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8f223c17ea3db63f0e85a951d5854d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aa8f223c17ea3db63f0e85a951d5854d4">Add</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other, bool matchIndexSets=true)</td></tr>
<tr class="separator:aa8f223c17ea3db63f0e85a951d5854d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a328217c45be92b409dc511fb7b5116a5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a328217c45be92b409dc511fb7b5116a5">Sub</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other, bool matchIndexSets=true)</td></tr>
<tr class="separator:a328217c45be92b409dc511fb7b5116a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a045b2bda01f9ff183b5e31e6b90bc4cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a045b2bda01f9ff183b5e31e6b90bc4cf">Mul</a> (const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;other, bool matchIndexSets=true)</td></tr>
<tr class="separator:a045b2bda01f9ff183b5e31e6b90bc4cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e1ea42768fc1e149624014c3cdda7cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a0e1ea42768fc1e149624014c3cdda7cb">operator/=</a> (const NTL::ZZ &amp;num)</td></tr>
<tr class="separator:a0e1ea42768fc1e149624014c3cdda7cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac849949bc5328c67aad30e1a1b607ba9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ac849949bc5328c67aad30e1a1b607ba9">operator/=</a> (long num)</td></tr>
<tr class="separator:ac849949bc5328c67aad30e1a1b607ba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5a926f22147af844cc596f9ff55ad3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#aad5a926f22147af844cc596f9ff55ad3">Exp</a> (long k)</td></tr>
<tr class="memdesc:aad5a926f22147af844cc596f9ff55ad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Small-exponent polynomial exponentiation.  <a href="classhelib_1_1_double_c_r_t.html#aad5a926f22147af844cc596f9ff55ad3">More...</a><br /></td></tr>
<tr class="separator:aad5a926f22147af844cc596f9ff55ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afac4fc2420b57eeb2eb8a0faa136396e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#afac4fc2420b57eeb2eb8a0faa136396e">automorph</a> (long k)</td></tr>
<tr class="memdesc:afac4fc2420b57eeb2eb8a0faa136396e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the automorphism F(X) --&gt; F(X^k) (with gcd(k,m)=1)  <a href="classhelib_1_1_double_c_r_t.html#afac4fc2420b57eeb2eb8a0faa136396e">More...</a><br /></td></tr>
<tr class="separator:afac4fc2420b57eeb2eb8a0faa136396e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a312c1538cfa9f1107e71164b04e0e9f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a312c1538cfa9f1107e71164b04e0e9f7">operator&gt;&gt;=</a> (long k)</td></tr>
<tr class="separator:a312c1538cfa9f1107e71164b04e0e9f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7d7e5ac67bf14b1136bf025277e955c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ad7d7e5ac67bf14b1136bf025277e955c">complexConj</a> ()</td></tr>
<tr class="memdesc:ad7d7e5ac67bf14b1136bf025277e955c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the complex conjugate, the same as automorph(m-1)  <a href="classhelib_1_1_double_c_r_t.html#ad7d7e5ac67bf14b1136bf025277e955c">More...</a><br /></td></tr>
<tr class="separator:ad7d7e5ac67bf14b1136bf025277e955c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ae9dd652a2d96b2e1892c1bc049237507"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#ae9dd652a2d96b2e1892c1bc049237507">operator&lt;&lt;</a> (std::ostream &amp;s, const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;d)</td></tr>
<tr class="separator:ae9dd652a2d96b2e1892c1bc049237507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e6c49b414a807b023ddb01d66324a0c"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classhelib_1_1_double_c_r_t.html#a5e6c49b414a807b023ddb01d66324a0c">operator&gt;&gt;</a> (std::istream &amp;s, <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;d)</td></tr>
<tr class="separator:a5e6c49b414a807b023ddb01d66324a0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementing polynomials (elements in the ring R_Q) in double-CRT form. </p>
<p>Double-CRT form is a matrix of L rows and phi(m) columns. The i'th row contains the FFT of the element wrt the ith prime, i.e. the evaluations of the polynomial at the primitive mth roots of unity mod the ith prime. The polynomial thus represented is defined modulo the product of all the primes in use.</p>
<p>The list of primes is defined by the data member indexMap. indexMap.getIndexSet() defines the set of indices of primes associated with this <a class="el" href="classhelib_1_1_double_c_r_t.html" title="Implementing polynomials (elements in the ring R_Q) in double-CRT form.">DoubleCRT</a> object: they index the primes stored in the associated <a class="el" href="classhelib_1_1_context.html" title="Maintaining the parameters.">Context</a>.</p>
<p>Arithmetic operations are computed modulo the product of the primes in use and also modulo Phi_m(X). Arithmetic operations can only be applied to <a class="el" href="classhelib_1_1_double_c_r_t.html" title="Implementing polynomials (elements in the ring R_Q) in double-CRT form.">DoubleCRT</a> objects relative to the same context, trying to add/multiply objects that have different <a class="el" href="classhelib_1_1_context.html" title="Maintaining the parameters.">Context</a> objects will raise an error. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a631f72e6137f32949db5d7aafb44fda0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a631f72e6137f32949db5d7aafb44fda0">&#9670;&nbsp;</a></span>DoubleCRT() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">helib::DoubleCRT::DoubleCRT </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac6d4ff0accbee297247d8da856310a5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6d4ff0accbee297247d8da856310a5f">&#9670;&nbsp;</a></span>DoubleCRT() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">helib::DoubleCRT::DoubleCRT </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;&#160;</td>
          <td class="paramname"><em>_context</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>indexSet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initializing <a class="el" href="classhelib_1_1_double_c_r_t.html" title="Implementing polynomials (elements in the ring R_Q) in double-CRT form.">DoubleCRT</a> from a ZZX polynomial. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">poly</td><td>The ring element itself, zero if not specified </td></tr>
    <tr><td class="paramname">_context</td><td>The context for this <a class="el" href="classhelib_1_1_double_c_r_t.html" title="Implementing polynomials (elements in the ring R_Q) in double-CRT form.">DoubleCRT</a> object, use "current active
context" if not specified </td></tr>
    <tr><td class="paramname">indexSet</td><td>Which primes to use for this object, if not specified then use all of them </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3fb8cdb8c4cf76e9199c83d15d54889a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fb8cdb8c4cf76e9199c83d15d54889a">&#9670;&nbsp;</a></span>DoubleCRT() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">helib::DoubleCRT::DoubleCRT </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;&#160;</td>
          <td class="paramname"><em>_context</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>indexSet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Same as above, but with zzX's. </p>

</div>
</div>
<a id="a0110b865683a9b7f29759f4932b6f1a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0110b865683a9b7f29759f4932b6f1a7">&#9670;&nbsp;</a></span>DoubleCRT() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">helib::DoubleCRT::DoubleCRT </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_context.html">Context</a> &amp;&#160;</td>
          <td class="paramname"><em>_context</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>indexSet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Also specify the <a class="el" href="classhelib_1_1_index_set.html" title="A dynamic set of non-negative integers.">IndexSet</a> explicitly. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa8f223c17ea3db63f0e85a951d5854d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8f223c17ea3db63f0e85a951d5854d4">&#9670;&nbsp;</a></span>Add()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::Add </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>matchIndexSets</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a27064d89f77f57740b03d2108fe62d0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27064d89f77f57740b03d2108fe62d0f">&#9670;&nbsp;</a></span>addPrimes()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::addPrimes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">NTL::ZZX *&#160;</td>
          <td class="paramname"><em>poly_p</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Expand the index set by s1. It is assumed that s1 is disjoint from the current index set. If poly_p != 0, then *poly_p will first be set to the result of applying toPoly. </p>

</div>
</div>
<a id="a8a09a101d684b9f2a444c27febdff627"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a09a101d684b9f2a444c27febdff627">&#9670;&nbsp;</a></span>addPrimesAndScale()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::addPrimesAndScale </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s1</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Expand index set by s1, and multiply by Prod_{q in s1}. s1 is disjoint from the current index set, returns log(product). </p>

</div>
</div>
<a id="afac4fc2420b57eeb2eb8a0faa136396e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afac4fc2420b57eeb2eb8a0faa136396e">&#9670;&nbsp;</a></span>automorph()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::automorph </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>k</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Apply the automorphism F(X) --&gt; F(X^k) (with gcd(k,m)=1) </p>

</div>
</div>
<a id="a6344aee3b06c937a8a357e9add21d0d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6344aee3b06c937a8a357e9add21d0d1">&#9670;&nbsp;</a></span>breakIntoDigits()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NTL::xdouble helib::DoubleCRT::breakIntoDigits </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>dgts</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Break into n digits,according to the primeSets in context.digits. See Section 3.1.6 of the design document (re-linearization) Returns the sum of the canonical embedding of the digits. </p>

</div>
</div>
<a id="ad7d7e5ac67bf14b1136bf025277e955c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7d7e5ac67bf14b1136bf025277e955c">&#9670;&nbsp;</a></span>complexConj()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::complexConj </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute the complex conjugate, the same as automorph(m-1) </p>

</div>
</div>
<a id="aad5a926f22147af844cc596f9ff55ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5a926f22147af844cc596f9ff55ad3">&#9670;&nbsp;</a></span>Exp()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::Exp </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>k</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Small-exponent polynomial exponentiation. </p>

</div>
</div>
<a id="a86bba624e14ddc8a86e5228c1e2bffad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86bba624e14ddc8a86e5228c1e2bffad">&#9670;&nbsp;</a></span>FFT() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::FFT </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a348e8249a6f370e6a523b6aa9e89ba2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a348e8249a6f370e6a523b6aa9e89ba2f">&#9670;&nbsp;</a></span>FFT() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::FFT </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;&#160;</td>
          <td class="paramname"><em>poly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="abe8873e29757567be4b676e032bb3b7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe8873e29757567be4b676e032bb3b7a">&#9670;&nbsp;</a></span>getContext()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classhelib_1_1_context.html">Context</a>&amp; helib::DoubleCRT::getContext </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab7c5ce0eed18d35a864b89198e5b2f9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7c5ce0eed18d35a864b89198e5b2f9f">&#9670;&nbsp;</a></span>getIndexSet()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a>&amp; helib::DoubleCRT::getIndexSet </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a67066e369b697046fd17f7f39a17bf58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67066e369b697046fd17f7f39a17bf58">&#9670;&nbsp;</a></span>getMap()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classhelib_1_1_index_map.html">IndexMap</a>&lt;NTL::vec_long&gt;&amp; helib::DoubleCRT::getMap </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aad46265bdefb14d5883c552c29ee773f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad46265bdefb14d5883c552c29ee773f">&#9670;&nbsp;</a></span>getOneRow() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long helib::DoubleCRT::getOneRow </td>
          <td>(</td>
          <td class="paramtype">NTL::Vec&lt; long &gt; &amp;&#160;</td>
          <td class="paramname"><em>row</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>positive</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get one row of a polynomial. </p>

</div>
</div>
<a id="ae2fefa3ded63458f059e9aade86f29fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2fefa3ded63458f059e9aade86f29fe">&#9670;&nbsp;</a></span>getOneRow() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long helib::DoubleCRT::getOneRow </td>
          <td>(</td>
          <td class="paramtype">NTL::zz_pX &amp;&#160;</td>
          <td class="paramname"><em>row</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>idx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a045b2bda01f9ff183b5e31e6b90bc4cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a045b2bda01f9ff183b5e31e6b90bc4cf">&#9670;&nbsp;</a></span>Mul()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::Mul </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>matchIndexSets</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5979ae811d8392e902d52441a3906f6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5979ae811d8392e902d52441a3906f6f">&#9670;&nbsp;</a></span>Negate() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::Negate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a111523929b19b67eb7c3028f041d9747"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a111523929b19b67eb7c3028f041d9747">&#9670;&nbsp;</a></span>Negate() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::Negate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a602435fa109d85c1a896b7dcb614c1a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a602435fa109d85c1a896b7dcb614c1a3">&#9670;&nbsp;</a></span>operator!=()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool helib::DoubleCRT::operator!= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5eaea93daef76b525e97bed6baffaf75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5eaea93daef76b525e97bed6baffaf75">&#9670;&nbsp;</a></span>operator*=() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator*= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ae84322d510fb43f4e1307ef494f1027f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae84322d510fb43f4e1307ef494f1027f">&#9670;&nbsp;</a></span>operator*=() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator*= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a2208cba94ed47b3062e33d09d9bcd04f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2208cba94ed47b3062e33d09d9bcd04f">&#9670;&nbsp;</a></span>operator*=() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator*= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a40fff78be8f0d474de64963f8a3c5344"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40fff78be8f0d474de64963f8a3c5344">&#9670;&nbsp;</a></span>operator*=() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator*= </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a57655b2b38af885b0fa4c67113b7b14d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57655b2b38af885b0fa4c67113b7b14d">&#9670;&nbsp;</a></span>operator++() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator++ </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aa6213e7fbf81a7d76a7a3eca2c255bf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6213e7fbf81a7d76a7a3eca2c255bf4">&#9670;&nbsp;</a></span>operator++() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::operator++ </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab862cf071d7d9b4705a71a12276c7448"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab862cf071d7d9b4705a71a12276c7448">&#9670;&nbsp;</a></span>operator+=() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator+= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a09c2f0e8a49dec1a23cba7514db21956"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09c2f0e8a49dec1a23cba7514db21956">&#9670;&nbsp;</a></span>operator+=() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator+= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="afcbce63268124352f675ffdcf1d9fbc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcbce63268124352f675ffdcf1d9fbc6">&#9670;&nbsp;</a></span>operator+=() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator+= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aa04acff3373bda5e2eb2362106646ee5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa04acff3373bda5e2eb2362106646ee5">&#9670;&nbsp;</a></span>operator+=() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator+= </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="adf65ecd249ea4bec214df9e74ac5610b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf65ecd249ea4bec214df9e74ac5610b">&#9670;&nbsp;</a></span>operator--() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator-- </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af486580b8d08571567e26c5e3d63f1bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af486580b8d08571567e26c5e3d63f1bb">&#9670;&nbsp;</a></span>operator--() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::operator-- </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac2e5c6c1238fb7bfcab215213d57cc13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2e5c6c1238fb7bfcab215213d57cc13">&#9670;&nbsp;</a></span>operator-=() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator-= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8d8ba7dddd582076f9b7b7500b4c9f55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d8ba7dddd582076f9b7b7500b4c9f55">&#9670;&nbsp;</a></span>operator-=() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator-= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a4c6b425dcc3dda0ebb07b153c39f2b0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c6b425dcc3dda0ebb07b153c39f2b0d">&#9670;&nbsp;</a></span>operator-=() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator-= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a91e564b60dd913a2255718a1fa5fe0d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91e564b60dd913a2255718a1fa5fe0d7">&#9670;&nbsp;</a></span>operator-=() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator-= </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a0e1ea42768fc1e149624014c3cdda7cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e1ea42768fc1e149624014c3cdda7cb">&#9670;&nbsp;</a></span>operator/=() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::operator/= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ac849949bc5328c67aad30e1a1b607ba9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac849949bc5328c67aad30e1a1b607ba9">&#9670;&nbsp;</a></span>operator/=() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator/= </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a359081fc6e97ee9d6ee8850e85458a79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a359081fc6e97ee9d6ee8850e85458a79">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aeb0601dd78afd903d603e262e0106c53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb0601dd78afd903d603e262e0106c53">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/5]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator= </td>
          <td>(</td>
          <td class="paramtype">const long&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9dc0acdda8893aef9e41eec2c438a709"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dc0acdda8893aef9e41eec2c438a709">&#9670;&nbsp;</a></span>operator=() <span class="overload">[3/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::operator= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>num</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a1e28f35c0499e4eb7e8b71ac62d5cfb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e28f35c0499e4eb7e8b71ac62d5cfb6">&#9670;&nbsp;</a></span>operator=() <span class="overload">[4/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::operator= </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a07d231b95562e44eca34f4c6b340781c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07d231b95562e44eca34f4c6b340781c">&#9670;&nbsp;</a></span>operator=() <span class="overload">[5/5]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp; helib::DoubleCRT::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacehelib.html#a4d6002f36f1a61982fded09adf1331ca">zzX</a> &amp;&#160;</td>
          <td class="paramname"><em>poly</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad96a04f62a268aa387cd4dbc456ab784"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad96a04f62a268aa387cd4dbc456ab784">&#9670;&nbsp;</a></span>operator==()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool helib::DoubleCRT::operator== </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a312c1538cfa9f1107e71164b04e0e9f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a312c1538cfa9f1107e71164b04e0e9f7">&#9670;&nbsp;</a></span>operator&gt;&gt;=()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::operator&gt;&gt;= </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>k</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9535bb1c1cff9fbedacfcc56a8f4ab4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9535bb1c1cff9fbedacfcc56a8f4ab4e">&#9670;&nbsp;</a></span>randomize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::randomize </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ *&#160;</td>
          <td class="paramname"><em>seed</em> = <code>nullptr</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Fills each row i with random ints mod pi, uses <a class="el" href="namespace_n_t_l.html">NTL</a>'s PRG. </p>

</div>
</div>
<a id="afb6579645cacc13b3c4c4f61229f6231"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb6579645cacc13b3c4c4f61229f6231">&#9670;&nbsp;</a></span>read()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::read </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a8f89ba3eda006c1fc14b7b52fe7ca4f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f89ba3eda006c1fc14b7b52fe7ca4f3">&#9670;&nbsp;</a></span>reduce()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::reduce </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9933c593e0ce6b46f1559a6a181a4939"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9933c593e0ce6b46f1559a6a181a4939">&#9670;&nbsp;</a></span>removePrimes()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::removePrimes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s1</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Remove s1 from the index set. </p>

</div>
</div>
<a id="ad7e6888ef2bac98a54e7088c82d2e87f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7e6888ef2bac98a54e7088c82d2e87f">&#9670;&nbsp;</a></span>sampleGaussian()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleGaussian </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>stdev</em> = <code>0.0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Coefficients are Gaussians Return a high probability bound on L-infty norm of canonical embedding. </p>

</div>
</div>
<a id="a45409981c85d5948123c93e8efeb60b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45409981c85d5948123c93e8efeb60b2">&#9670;&nbsp;</a></span>sampleGaussianBounded()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleGaussianBounded </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>stdev</em> = <code>0.0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad1e6674862ea6da74cc3a8f1a901cef1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1e6674862ea6da74cc3a8f1a901cef1">&#9670;&nbsp;</a></span>sampleHWt()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleHWt </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>Hwt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Coefficients are -1/0/1 with pre-specified number of nonzeros. </p>

</div>
</div>
<a id="a5bd69bc52fb02706a8dc81c6f9fcf9b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5bd69bc52fb02706a8dc81c6f9fcf9b6">&#9670;&nbsp;</a></span>sampleHWtBounded()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleHWtBounded </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>Hwt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a842f11906b1bc36b48ae4a8d62b4ff91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a842f11906b1bc36b48ae4a8d62b4ff91">&#9670;&nbsp;</a></span>sampleSmall()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleSmall </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Coefficients are -1/0/1, Prob[0]=1/2. </p>
<p>Sampling routines: Each of these return a high probability bound on L-infty norm of canonical embedding </p>

</div>
</div>
<a id="a91d2454818d59f6ea29c277844e7957f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91d2454818d59f6ea29c277844e7957f">&#9670;&nbsp;</a></span>sampleSmallBounded()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleSmallBounded </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4a4c90df3a778273003958bae0c4fd18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a4c90df3a778273003958bae0c4fd18">&#9670;&nbsp;</a></span>sampleUniform() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NTL::xdouble helib::DoubleCRT::sampleUniform </td>
          <td>(</td>
          <td class="paramtype">const NTL::ZZ &amp;&#160;</td>
          <td class="paramname"><em>B</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a8ea63e63721e62276f1277eaeefa25f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ea63e63721e62276f1277eaeefa25f8">&#9670;&nbsp;</a></span>sampleUniform() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double helib::DoubleCRT::sampleUniform </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>B</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Coefficients are uniform in [-B..B]. </p>

</div>
</div>
<a id="a1d18d021e42bb0fcf2ed970c6fa599c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d18d021e42bb0fcf2ed970c6fa599c8">&#9670;&nbsp;</a></span>scaleDownToSet()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::scaleDownToSet </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>ptxtSpace</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>delta</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a60f6697ca6a3c56375b2f9650e108497"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60f6697ca6a3c56375b2f9650e108497">&#9670;&nbsp;</a></span>SetOne()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::SetOne </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a067a11ce98dc23c255e8e14469936a0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a067a11ce98dc23c255e8e14469936a0d">&#9670;&nbsp;</a></span>setPrimes()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::setPrimes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s1</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>@ brief make prime set equal to s1 </p>

</div>
</div>
<a id="a68dbfc4cbeb18fa08fd6309719645a32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68dbfc4cbeb18fa08fd6309719645a32">&#9670;&nbsp;</a></span>SetZero()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a>&amp; helib::DoubleCRT::SetZero </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a328217c45be92b409dc511fb7b5116a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a328217c45be92b409dc511fb7b5116a5">&#9670;&nbsp;</a></span>Sub()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::Sub </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>matchIndexSets</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a23730171b19d350e5289245e1c7d634e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23730171b19d350e5289245e1c7d634e">&#9670;&nbsp;</a></span>toPoly() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::toPoly </td>
          <td>(</td>
          <td class="paramtype">NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>positive</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a80f58978e1b572fcf7a3d012f4a69f23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80f58978e1b572fcf7a3d012f4a69f23">&#9670;&nbsp;</a></span>toPoly() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::toPoly </td>
          <td>(</td>
          <td class="paramtype">NTL::ZZX &amp;&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_index_set.html">IndexSet</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>positive</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Recovering the polynomial in coefficient representation. This yields an integer polynomial with coefficients in [-P/2,P/2], unless the positive flag is set to true, in which case we get coefficients in [0,P-1] (P is the product of all moduli used). Using the optional <a class="el" href="classhelib_1_1_index_set.html" title="A dynamic set of non-negative integers.">IndexSet</a> param we compute the polynomial reduced modulo the product of only the primes in that set. </p>

</div>
</div>
<a id="a36127a66a5b6bd2645676edcfb84efdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36127a66a5b6bd2645676edcfb84efdb">&#9670;&nbsp;</a></span>write()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void helib::DoubleCRT::write </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="ae9dd652a2d96b2e1892c1bc049237507"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9dd652a2d96b2e1892c1bc049237507">&#9670;&nbsp;</a></span>operator&lt;&lt;</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5e6c49b414a807b023ddb01d66324a0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e6c49b414a807b023ddb01d66324a0c">&#9670;&nbsp;</a></span>operator&gt;&gt;</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::istream&amp; operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classhelib_1_1_double_c_r_t.html">DoubleCRT</a> &amp;&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/HElib/include/helib/<a class="el" href="_double_c_r_t_8h_source.html">DoubleCRT.h</a></li>
<li>/HElib/src/<a class="el" href="_double_c_r_t_8cpp.html">DoubleCRT.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.8-->
<!-- start footer part -->
</div>
</div>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
        <script type="text/javascript" src="doxy-boot.js"></script>
</html>
